#ifndef __FILE_SYSTEM_H__
  #define __FILE_SYSTEM_H__

#include <vector>
#include <string>
#include <cstring>
#include <cstdio>
#include <cstdlib>

using namespace std;

class file_system {
private:
  void execute(const string &command, string &output) const;
  void execute(const string &command, vector<string> &output, size_t max = 64) const;

public:
  bool exists(const string &file_name) const;
  void get_files(const string &path, vector<string> &output, size_t max = 64) const;
  void get_files_including_subfolders(const string &path, vector<string> &output, size_t max = 64) const;
  void get_directories(const string &path, vector<string> &output, size_t max = 64) const;
  string &get_current_path(string &output) const;
  string &get_username(string &output) const;
  string &get_os_name(string &output) const;

  string &get_compile_time(string &output) const;
  string &get_compile_date(string &output) const;
}; // class file_system

#endif
